HP Time-Shared BASIC (HP TSB) was a computer system sold by the Hewlett-Packard Corporation in the late 1960s and 1970s based on their HP 2100 line of minicomputers. The system implemented a dialect of the BASIC programming language and a rudimentary user account and program library system. The software run on the system was also known by its versioned name such as HP 2000C Time-Shared BASIC and the operating system came in different varieties — 2000A, 2000B, 2000C, High-Speed 2000C, 2000E, 2000F, and 2000/Access.
Except for the 2000A and 2000E systems, the system was implemented using a dual-processor architecture. One fully configured HP 2100 processor was used for execution of most of the system code and all of the user code and a second, smaller HP 2100 processor was used to handle the RS-232 serial lines through which the time-sharing users connected. Depending on the hardware configuration, the system supported between 16 and 32 simultaneous remote users with the possibility of hundreds of user accounts. The usual terminal for a TSB system was a Teletype Model 33 ASR and connected directly to the I/O processor or through a modem or acoustic coupler. Account names were a combination of one alphabetic character followed by three decimal digits, e.g., B001. Privileged accounts started with the letter "A" and had some additional command and program storage capabilities. Superuser accounts began with the "@" character, e.g., @004.
During execution, user programs were swapped to fixed-head magnetic drum storage. When not executing, user programs were stored on moving-head cartridge- or pack-loaded disk storage. Privileged users could also store programs on the much-faster drum. Backup was to magnetic tape.
The language was a fairly standard implementation of BASIC, providing an integrated editing and runtime environment. Statements were analyzed for correct syntax as they were entered and then stored in semi-compiled form. Each BASIC statement had to be on a uniquely numbered line, e.g.: 10 PRINT "HELLO WORLD" and could only contain one statement, although multiple variable assignments were allowed, e.g., 20 LET A=B=C=42
The language supported:
Substrings within strings were accessed using a substring notation: "A$[L,R]" where L specified the leftmost byte to be accessed and R specified the rightmost byte to be accessed. This is in sharp contrast to some other BASICs that use functions such as LEFT$(), MID$(), and RIGHT$() to access substrings, although ANSI BASIC continues to use a similar substring syntax to that introduced by Hewlett-Packard.